/*
 * Licensed to the 南京汇海交通科技有限公司
 *
 * Copyright (c) 2025.
 * All rights reserved.
 *
 * 本软件属南京汇海交通科技有限公司所有，在未获得南京汇海交通科技有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.chframework.boot.web.support;

import com.chframework.common.constant.SystemConstant;
import com.chframework.common.extend.IpAddressHelper;
import com.chframework.common.extend.StringHelper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.context.ApplicationContext;

import java.text.MessageFormat;
import java.util.function.Function;

public class BaseUrlBuilder {

    /**
     * 创建SpringWeb应用启动后的访问BaseUrl
     */
    public static String createBaseUrlAboutSpringWeb(ApplicationContext applicationContext, Function<ServerProperties, String> function) {
        String ipAddress = IpAddressHelper.getServerIp();

        ServerProperties serverProperties = applicationContext.getBean(ServerProperties.class);
        int port = serverProperties.getPort();

        String contextPath = function.apply(serverProperties);
        contextPath = StringUtils.isBlank(contextPath)
                ? SystemConstant.FOLDER_SEPARATOR
                : StringHelper.startWith(contextPath, SystemConstant.FOLDER_SEPARATOR)
                ? contextPath
                : SystemConstant.FOLDER_SEPARATOR + contextPath;

        return MessageFormat.format("http://{0}:{1}{2}", ipAddress, String.valueOf(port), contextPath);
    }

}
